# ifndef __Trace_H_
# define __Trace_H_

void __cdecl Trace (const char * _strFmt, ...);
//inline void __cdecl DummyTrace (const char * _strFmt, ...) {}

void __cdecl TraceC (bool _bCond, const char * _strFmt, ...);

void TraceLastError (const char * _strComment = NULL);

# ifdef _DEBUG

#   ifndef TRACE
#     define TRACE            Trace
#   endif

#	ifndef TRACEC
#     define TRACEC           TraceC
#	endif

#   ifndef TRACE_LAST_ERROR
#     define TRACE_LAST_ERROR TraceLastError
#   endif

# else // ! _DEBUG

#   ifndef TRACE
#     define TRACE            1 ? (void)0 : Trace
#   endif

#	ifndef TRACEC
#     define TRACEC           1 ? (void)0 : TraceC
#   endif

#   ifndef TRACE_LAST_ERROR
#     define TRACE_LAST_ERROR 1 ? (void)0 : TraceLastError
#   endif

# endif // _DEBUG

# endif // __Trace_H_